-
Notifications
You must be signed in to change notification settings - Fork 60
solver warmstart #5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
This is an interesting scenario! It seems to suggest we should not follow the exact same behavior here as MuJoCo because the cost of the thread divergence is higher than the cost of the occasional extra solver step. That's my read at least. I would suggest holding off on this and revisiting after we implement logging and measuring solver statistics, because then we can get a really good intuition on how early returning relates to step perf and the tradeoffs for this kind of thread divergence. |
@thowell let's close this for now unless you're planning to come back to it soon? |
@erikfrey the pr is updated with a simplified warmstart option for the solver |
@thowell maybe in this same PR we should do some testing and compare solver iterations for MuJoCo Warp vs. MuJoCo C. My expectation is that we are close to the number of solver iterations compared to MJC, let's say at most 1 more solver iteration for constraints that converge quickly, maybe a a few more for solutions that take a lot of iterations to converge quickly. And that warmstart helps as much in MJWarp as it does in MJC. Do you want to do that analysis over a few scenes? Maybe as part of that analysis we should add printing solver stats to mjwarp-testspeed - WDYT? |
@thowell what's the status of this PR? |
@erikfrey the changes in this pr are now quite minimal, essentially just an option to initialize the solve |
the existing solver implementation initializes
qacc
withqacc_warmstart
.this pr:
disableflags
option is not set,solve
compares the costs associated withqacc_smooth
andqacc_warmstart
in order to determine the initialization forqacc
disableflags
option is set,qacc
is initialized withqacc_smooth
benchmarking:
this pr:
main: